#Requires AutoHotkey v2.0 
#Include tool\SimLog.ahk
#Include tool\FileTool.ahk

class ShortcutKey {

    __New(target := this.target, linkFile := this.linkFile, workingDir := this.workingDir, args := this.args, description := this.description, iconFile := this.iconFile, shortcutKey := this.shortcutKey, iconNumber := this.iconNumber, runState := this.runState) {
        
        this.logger.logPath := Format("{1}{2}.log", SimLog.PATH_FDL, this.name)
        this.logger.info(Format("[{1}]启动。。。", this.name))

        this.target := target
        this.linkFile := linkFile
        this.workingDir := workingDir
        this.args := args
        this.description := description
        this.iconFile := iconFile
        this.shortcutKey := shortcutKey
        this.iconNumber := iconNumber
        this.runState := runState
        this.logger.debug(Format("[{1}]{2}。。。", this.name, this.paramToStr()))

    }
    
    ; 创建快捷方式
    create(target := this.target, linkFile := this.linkFile, workingDir := this.workingDir, args := this.args, description := this.description, iconFile := this.iconFile, shortcutKey := this.shortcutKey, iconNumber := this.iconNumber, runState := this.runState){
        
        ; 检查两个关键值
        ; code(待完善)

        FileCreateShortcut(target, linkFile , workingDir, args, description, iconFile, shortcutKey, iconNumber, runState)
    }
    
    ; 显示参数
    paramToStr(){
        temp := Format("{{}target={1}, linkFile={2}, workingDir={3}, args={4}{}}", this.target, this.linkFile, this.workingDir, this.args,)
        return temp
    }

    ; #----------#----------#----------#----------#----------#


    ; 类型: 字符串
    ; 快捷方式引用的文件的名称, 除非文件集成到了系统中(如 Notepad.exe), 否则应该包含绝对路径. 创建快捷方式时它指向的文件不一定需要存在; 但是, 如果不存在, 某些系统可能会以意想不到的方式改变路径.
    target := "Notepad.exe"

    ; 类型: 字符串
    ; 要创建的快捷方式文件名, 如果未指定绝对路径则假定在 A_WorkingDir. 必须确保扩展名为 .lnk. 目标目录必须已经存在. 如果文件已经存在, 则它会被覆盖.
    linkFile := "快捷方式.lnk"


    ; #----------#----------#----------#----------#----------#


    ; 类型: 字符串
    ; 如果为空或省略, 则 LinkFile 的 "起始位置" 字段为空, 而当快捷方式启动时, 系统会提供默认的工作目录. 否则, 指定在启动快捷方式时 Target 的当前工作目录.
    workingDir := ""

    ; 类型: 字符串
    ; 如果为空或省略, 则不带参数来启动 Target. 否则, 请指定启动快捷方式时要传递给 Target 的参数. 参数之间使用空格分隔. 如果某个参数包含空格, 则要把它括在双引号中.
    args := ""

    ; 类型: 字符串
    ; 如果为空或省略, 则 LinkFile 将没有备注. 否则, 请指定描述快捷方式的备注(由操作系统用于显示在 ToolTip(工具提示) 中, 等等...)
    description := ""

    ; 类型: 字符串
    ; 如果为空或省略, 则 LinkFile 将使用 Target 的图标. 否则, 请指定显示在 LinkFile 中图标的完整路径和名称. 它必须为必须为 .ICO 文件或者 EXE 或 DLL 文件中的首个图标.
    iconFile := ""

    ; 类型: 字符串
    ; 如果为空或省略, 则 LinkFile 将没有快捷键. 否则, 请指定单个字母, 数字或在按键列表中的单个按键的名称(可能不支持鼠标按钮或其他非标准的按键). 不要 包含修饰符. 目前, 所有创建的快捷键都使用 Ctrl+Alt 作为修饰键. 例如, 如果在此参数中指定字母 B, 则快捷键将为 Ctrl+Alt+B.
    shortcutKey := ""


    ; 类型: 整数
    ; 如果省略, 则默认为 1. 否则, 在 IconFile 中指定要使用图标的编号. 例如, 2 表示第二个图标.
    iconNumber := 1

    ; 类型: 整数
    ; 如果省略, 则默认为 1. 否则, 指定下列数字之一, 最小化或最大化运行 Target.
    ; 1 = 正常
    ; 3 = 最大化
    ; 7 = 最小化
    runState := 1


    ; #----------#----------#----------#----------#----------#

    logger := SimLog() ; 日志对象

    name := "ShortCut" ; 名字


}
